package com.augurit.gzcgwsp.readAndParseXML.service;

import java.io.File;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;

import com.augurit.gzcgwsp.ywcmn.web.form.YwComQyxxForm;

/**
 * 设施改动、企业资质、户外广告通用的方法
 * @author Administrator
 *
 */
public interface IParseXMLService {
	
	/**
	 * 解析xml数据部分
	 * @param map  数据库和网站端传过来的xml标签对应map
	 * @param xmlFilePath   xml路径
	 * @param feedbackPath  解析正确反馈xml存放路径
	 * @param exceptionPath  解析异常反馈xml存放路径
	 * @throws DocumentException
	 */
	public void initXmlFile(Map<String,String> map,String xmlFilePath,String feedbackPath,String exceptionPath) throws Exception;
	
	/**
	 * 通过数据库和网站端传过来的xml标签对应map的key,获得xml中对应标签的值
	 * @param mapKey
	 * @return xml中对应标签的值
	 */
	public String getMapValue(String mapKey);
	
	
	/**
	 * 解析xml头部
	 * @param map  数据库和网站端传过来的xml标签对应map
	 * @param xmlFilePath   xml路径
	 * @param feedbackPath  解析正确反馈xml存放路径
	 * @param exceptionPath  解析异常反馈xml存放路径
	 * @throws DocumentException
	 */
	public Map<String,String> initXmlFileHead(Map<String, String> map, File file,
			String feedbackPath, String exceptionPath) throws Exception ;

	/**
	 * 通过数据库和网站端传过来的xml标签对应map的key,获得xml中头部对应标签的值
	 * @param mapKey
	 * @return xml中头部对应标签的值
	 */
	public String getHeadMapValue(String mapKey);
	
	/**
	 * 生成解析成功的反馈xml
	 * @param map
	 * @return
	 */
	public Document createFeedbackXML (Map map);
	
	/**
	 * 写入xml文件地址
	 * @param document 所属要写入的内容
	 * @param outFilePath 文件存放的地址
	 * @param file 	文件
	 */
	public void writeFeedbackXML(Document document, String outFilePath,File file) throws Exception;
	
	/*
	 * 生成 交换异常反馈的XML
	 */
	public Document createExceptionXML (Map map);
	
	/**
	 * 写入xml文件地址
	 * @param document 所属要写入的内容
	 * @param outFilePath 文件存放的地址
	 * @param file 文件
	 */
	public void writeExceptionXML(Document document, String outFilePath,File file) throws Exception;

	/**
	 * 把文件移走
	 * @param filePath 从这里读文件
	 * @param newPath 移到这里
	 * @param fileName 文件名
	 */
	public void removeXML(String filePath,String newPath,String fileName);
	
	/**
	 * 获得预受理ID
	 * @param file 文件
	 * @return 预受理ID   approvalId
	 */
	public String getApprovalId(File file) throws Exception;
	
	/**
	 * 获得业务代码或者网上提交时间
	 * @param file 文件
	 * @return 业务代码   BusinessCode
	 */
	public String getBusinessCodeOrSendTime(File file,String strFlag) throws Exception;
	

	/**
	 * 解析附件
	 * @param file 文件
	 * @param 文件别名和文件名对应的map
	 */
	public Map<String,String> parseFujian(File file) throws Exception;
	
	/**
	 * 通过申请单位名称，获取申请单位
	 * @param sqdw
	 * @return 企业信息YwComQyxxForm
	 */
	public YwComQyxxForm getSqdwBySqdw(String sqdw,String templateCode);
	
	/**
	 * 保存异常时，生成异常反馈xml
	 * @param e
	 * @param files
	 * @param ywKeyMapHeadMap
	 * @param ywFeedbackPath
	 * @param ywExceptionPath
	 * @param i
	 */
	public void createSaveOrParseExceptionXml(String errorCode,String errorStatus,Exception e,File[] files,Map<String, String> ywKeyMapHeadMap,
			String ywFeedbackPath,String ywExceptionPath,int i);
	
	/**
	 * 处理附件
	 * @param projectPath
	 * @param fileName
	 * @param ywFujianpath
	 * @param ywFeedbackPath
	 * @param ywExceptionPath
	 * @param keyMapHead
	 * @param files
	 * @param ywFujianMap
	 * @param i
	 * @param qyid
	 * @param ajId
	 * @param tplcode
	 * @throws Exception
	 */
	public void handleFj(String projectPath,String fileName,String ywFujianpath,String ywFeedbackPath,String ywExceptionPath,
			Map<String, String> keyMapHead,File[] files,Map<String, Long> ywFujianMap,int i,long qyid,long ajId,String tplcode) throws Exception;
}
